package com.tfjybj.itoo.exam.model;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.tfjybj.itoo.exam.entity.ExaminationEntity;
import com.tfjybj.itoo.exam.entity.ExamineeEntity;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.ToString;
import lombok.experimental.Accessors;

import javax.persistence.Column;
import java.io.Serializable;
import java.util.Date;

/**
 * ExamineeModel
 * 考生表
 *
 * @author 任晓帅
 * @version 2.0.0
 * @since 2.0.0 2018-11-15 19:40:28
 */
@ApiModel(value = "ExamineeModel:考生表")
@Data
@NoArgsConstructor
@Accessors(chain = true)
@ToString(callSuper = true)
public class ExamineeModel implements Serializable {

    //region 模板逆向生产来自ExamineeEntity的属性
    /**
     * id
     */
    @ApiModelProperty(value = "examinee主键")
    @Column(name = "id")
    private String id;
    /**
     * 学生姓名
     */
    @ApiModelProperty(value = "学生姓名")
    private String studentName;

    /**
     * 学生id
     */
    @ApiModelProperty(value = "学生id")
    private String studentId;

    /**
     * 学生学号
     */
    @ApiModelProperty(value = "学生学号")
    private String studentCode;

    /**
     * 班级名
     */
    @ApiModelProperty(value = "班级名")
    private String className;

    /**
     * 班级id
     */
    @ApiModelProperty(value = "班级id")
    private String classId;

    /**
     * 专业名
     */
    @ApiModelProperty(value = "专业名")
    private String majorName;

    /**
     * 专业id
     */
    @ApiModelProperty(value = "专业id")
    private String majorId;

    /**
     * 学院名
     */
    @ApiModelProperty(value = "学院名")
    private String collegeName;

    /**
     * 学院id
     */
    @ApiModelProperty(value = "学院id")
    private String collegeId;

    /**
     * 考试id
     */
    @ApiModelProperty(value = "考试id")
    private String examinationId;

    /**
     * 与考试考场关联_id
     */
    @ApiModelProperty(value = "与考试考场关联_id")
    private String examRoomId;

    /**
     * 学生考试状态（0未登录，1已抽，2正在考试，3交卷）
     */
    @ApiModelProperty(value = "学生考试状态（0未登录，1已抽，2正在考试，3交卷）", example = "0")
    private Integer studentExamState;

    /**
     * 学生IP
     */
    @ApiModelProperty(value = "学生IP")
    private String studentIp;

    /**
     * 交卷日期时间
     */
    @JsonFormat(
            pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8"
    )
    @ApiModelProperty(value = "交卷日期时间")
    private Date submitTime;

    /**
     * 登录时间
     */
    @JsonFormat(
            pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8"
    )
    @ApiModelProperty(value = "登录时间")
    private Date loginTime;

    /**
     * 缺考信息
     */
    @ApiModelProperty(value = "缺考信息")
    private String absentInfo;

    /**
     * 获取抽题时间
     */
    @JsonFormat(
            pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8"
    )
    @ApiModelProperty(value = "获取抽题时间")
    private Date getQuestionTime;

    /**
     * 理论交卷日期时间
     */
    @JsonFormat(
            pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8"
    )
    @ApiModelProperty(value = "理论交卷日期时间")
    private Date shouldSubmitTime;

    /**
     * 考试时长(分钟)
     */
    @ApiModelProperty(value = "考试时长(分钟)", example = "0")
    private Integer examDuration;

    /**
     * 头像链接地址
     */
    @ApiModelProperty(value = "头像链接地址")
    private String pictureAddress;

    //endregion examName

    /* *****************************以下是非模板生成的内容************************************ */
    @ApiModelProperty(value = "缺考人数", example = "0")
    private Integer nologinCount;

    @ApiModelProperty(value = "考试名称")
    private String examName;

    @ApiModelProperty(value = "考试科目")
    private String courseName;

    @ApiModelProperty(value = "科目id")
    private String courseId;

    @ApiModelProperty(value = "考生安排信息")
    private ExamineeEntity examineeEntity;

    @ApiModelProperty(value = "数据库当前时间", required = true)
    private Date presentTime;

    /**
     * 考试安排信息;需加:
     */
    private ExaminationEntity examinationEntity;
    /**
     * 考试的试卷信息
     */
    @ApiModelProperty(value = "考试的试卷信息", required = true)
    private ExamPaperModel examPaperModel;

    /**
     * 考试名称
     */
    @ApiModelProperty("考试名称")
    private String examinationName;

    /**
     * 考场名称
     */
    @ApiModelProperty("考场名称")
    private String examRoomName;

    /**
     * 考场人数
     */
    @ApiModelProperty(value = "考场人数", example = "0")
    private Integer sumExaminee;

    /**
     * 考试开考时间
     */
    @JsonFormat(
            pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8"
    )
    @ApiModelProperty(value = "考试开始时间")
    private Date beginTime;

    /**
     * 考试结束时间
     */
    @JsonFormat(
            pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8"
    )
    @ApiModelProperty(value = "考试结束时间")
    private Date endTime;

    /* ***************************** 任蒙蒙添加(在线通知用)************************************ */
    /**
     * 模板id
     */
    @ApiModelProperty(value = "模板id")
    private String templateId;

    /**
     * 旧题的题型Id
     */
    @ApiModelProperty(value = "题型id")
    private String questionTypeId;


}
